____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Goertzel-Algorithmus
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Der Goertzel-Algorithmus ist ein Verfahren aus der digitalen Signalverarbeitung und stellt eine besondere Form der diskreten Fourier-Transformation (DFT) dar. Im Gegensatz zu den verschiedenen schnellen Berechnungsmethoden bei der diskreten schnellen Fourier-Transformation (FFT), die immer alle diskreten Spektralkomponenten in einem Block berechnen, ist es mit dem Goertzel-Algorithmus mΓΆglich, nur einzelne diskrete Spektralanteile zu berechnen. Entwickelt wurde der Algorithmus 1958 von Gerald Goertzel (1919β2002).
Contents
β’ Funktion
β’ Algorithmus
β’ Anwendungen
β’ Literatur
β’ Weblinks
β’ Einzelnachweise
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Funktion
Der Algorithmus basiert auf einer Struktur bestehend aus einem digitalen Filter, das um eine Zustandssteuerung erweitert ist. Die ZustΓ€nde unterteilen die Berechnung in den RΓΌckwΓ€rtszweig, in dem die im Zeitbereich abgetasteten Eingangswerte geladen werden, und in einen VorwΓ€rtszweig, der das Ausgangssignal liefert. Die RΓΌckwΓ€rtsschleife wird bei jedem digitalen Abtastwert (englisch sample) durchlaufen und ist als ein rekursives digitales Filter mit zwei Zustandsspeichern und einem Akkumulator aufgebaut. Der VorwΓ€rtszweig wird erst nach N {\displaystyle N} Abtastwerten einmalig durchlaufen und liefert aus den Zustandsspeichern den berechneten komplexen Ausgangswert β nΓ€mlich die spektrale Komponente nach Betrag und Phase.
Durch die Wahl der dabei eingesetzten Filterkoeffizienten lΓ€sst sich die FrequenzselektivitΓ€t einstellen. Durch die Wahl der Anzahl der Abtastwerte N {\displaystyle N} lΓ€sst sich der GΓΌtefaktor beeinflussen. N {\displaystyle N} kann beliebige natΓΌrliche Werte annehmen.
Pro Spektralkomponente ist allerdings eine eigenstΓ€ndige Goertzel-Struktur notwendig. Daher ist dieser Algorithmus vor allem dann vorteilhaft und mit geringerem Rechenaufwand anwendbar, wenn nicht das komplette Spektrum berechnet werden soll, sondern nur einzelne Spektralkomponenten daraus.
AusfΓΌhrliche mathematische Herleitungen des Algorithmus finden sich in den unten angegebenen Literaturquellen.
Algorithmus
Von einem diskreten Signal s i ( i = 0 , . . . , N ) {\displaystyle s_{i}(i=0,...,N)} wird der Realteil C {\displaystyle C} und der ImaginΓ€rteil S {\displaystyle S} einer Spektralkomponente Ο Ο {\displaystyle \omega } ΓΌber einen rekursiven Algorithmus bestimmt.cite-ref-1[1] Die Startbedingungen sind:
U N + 2 = U N + 1 = 0 {\displaystyle U_{N+2}=U_{N+1}=0}
Γber
U k = s k + 2 β
β
U k + 1 β
β
cos β‘ β‘ Ο Ο β β U k + 2 {\displaystyle U_{k}=s_{k}+2\cdot U_{k+1}\cdot \cos \omega -U_{k+2}} fΓΌr k = N , N β β 1 , β¦ β¦ , 1 {\displaystyle k=N,N-1,\dotsc ,1}
ergibt sich:
C = s 0 + U 1 β
β
cos β‘ β‘ Ο Ο β β U 2 {\displaystyle C=s_{0}+U_{1}\cdot \cos \omega -U_{2}}
S = U 1 β
β
sin β‘ β‘ Ο Ο {\displaystyle S=U_{1}\cdot \sin \omega }
Auf die Winkelfunktionen cos β‘ β‘ Ο Ο {\displaystyle \cos \omega } und sin β‘ β‘ Ο Ο {\displaystyle \sin \omega } muss dabei nur je einmal zugegriffen werden.
AufwandsabschΓ€tzung
Pro Berechnung einer Spektralkomponente sind beim Goertzel-Algorithmus 2 N + 2 {\displaystyle 2N+2} Additionen/Subtraktionen und N + 2 {\displaystyle N+2} Multiplikationen notwendig.cite-ref-2[2] Vergleicht man diesen Aufwand mit dem Berechnungsaufwand bei der schnellen Fourier-Transformation (FFT), ist der Goertzel-Algorithmus immer dann effizienter, wenn weniger als 5 6 β
β
log 2 β‘ β‘ N {\displaystyle {\tfrac {5}{6}}\cdot \log _{2}N} Spektralkomponenten berechnet werden sollen. Denn pro Spektralkomponente (bin) ist eine weitere Goertzelstruktur notwendig, wΓ€hrend bei der schnellen Fourier-Transformation der Berechnungsaufwand nur mit N β
β
log 2 β‘ β‘ N {\displaystyle N\cdot \log _{2}N} ansteigt.
Der Algorithmus kann effizient in digitalen Signalprozessoren implementiert werden.
Anwendungen
Die Anwendungen liegen in der Erkennung einzelner Frequenzen (Tonerkennung) in einem Signal wie beispielsweise bei der Erkennung der Signalisierungsfrequenzen bei dem im Telefonbereich eingesetzten Mehrfrequenzwahlverfahren. In diesem Fall muss nur der Betrag der Spektralkomponente ausgewertet werden, was weitere Vereinfachungen in der Berechnung gestattet.
Literatur
β’ Gerald Goertzel: An Algorithm for the Evaluation of Finite Trigonometric Series. In: American Math. Monthly. Vol 65. 1958, S. 34β35.
β’ Alan V. Oppenheim: Zeitdiskrete Signalverarbeitung. Oldenbourg Verlag, MΓΌnchen 1999, ISBN 3-486-24145-1 (deutsche Γbersetzung von Discrete-Time Signal Processing, Prentice Hall Inc. 1989)
Weblinks
Einzelnachweise
cite-note-22. β Karl-Dirk Kammeyer, Kristian Kroschel: Digitale Signalverarbeitung: Filterung und Spektralanalyse mit MATLAB-Γbungen. Springer-Verlag, 2009, ISBN 978-3-8348-0610-9, S. 274 (google.de [abgerufen am 24. Juni 2017]).